package challenge.计挑赛._2020国赛Java4;

/**
 * @author 挚爱之夕
 * @version 1.0
 * @implSpec
 * 小明设计了一种基于质数(2 、 3 、 5 、 7 、 11 …)的变进制数，
 * 第一位为2进制，第二位为3进制，第三位为5进制，以此类推。请将该变进制数转化为十进制数。
 * 输入说明
 * 输入1行，最大10位的变进制数（只使用0-9,a-z表示每一位数，a为10、b为11、…、z为35,测试数据中无大于z的单位数）。
 * 输出说明
 * 一行：转化的十进制数。
 * 输入样例复制
 * 321
 * 输出样例复制
 * 23
 * 数据范围提示
 * （说明样例，321→3*(3*2) + 2*(2) +1=23）
 *
 * @since 2022 - 12 - 15 - 19:21
 */
import java.util.Scanner;

class Main_3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        int n = s.length();
        //求质数
        int[] nums = new int[n];
        nums[0] = 2;
        int cur = 1;
        while(cur < n) {
            int t = nums[cur - 1] + 1;
            while(true) {
                if(check(t)) {
                    nums[cur] = t;
                    break;
                }
                t++;
            }
            cur++;
        }
        long res = 0;
        for(int i = n - 1; i >= 0; i--) {
            long val = s.charAt(i) <= '9' ? s.charAt(i) - '0' : s.charAt(i) - 'a' + 10;
            int l = n - i - 1;
            //累乘该位右边数对应的进制值
            for(int j = 0; j < l; j++) {
                val *= nums[j];
            }
            res += val;
        }
        System.out.println(res);
    }
    static boolean check(int num) {
        for(int i = 2; i < num; i++) {
            if(num % i == 0) return false;
        }
        return true;
    }
}
public class C_变进制数转10进制 {
}
